home *** CD-ROM | disk | FTP | other *** search
/ Hardcore Visual Basic 5.0 (2nd Edition) / Hardcore Visual Basic 5.0 - Second Edition (1997)(Microsoft Press).iso / Code / Goodies / CallBack / SOURCE / BASEDISP.H < prev    next >
C/C++ Source or Header  |  1995-10-03  |  2KB  |  70 lines

  1. /*
  2. *   Visual Basic Callback Server Source
  3. *
  4. *   (c) Copyright Microsoft Corp. 1995 All Rights Reserved
  5. */ 
  6.  
  7. #ifndef __BaseDisp_H__
  8. #define __BaseDisp_H__
  9. #include "ERRINFO.H"
  10. #define DERIVE_BASE(X) CBaseIDispatch::Derive((CBaseIDispatch FAR*) (X), pDeriveFrom)
  11. #define PASS_BASE(X) (CBaseIDispatch FAR*) X
  12. #define GET_BASE CBaseIDispatch FAR* pDeriveFrom
  13. CLASS CBaseIDispatch : public IDispatch
  14. {
  15. public:
  16.     static void Derive(CBaseIDispatch FAR* pDest, CBaseIDispatch FAR* pSource);
  17.     /* IUnknown methods */
  18.     STDMETHOD(QueryInterface)(REFIID riid, void FAR* FAR* ppvObj);
  19.     STDMETHOD_(ULONG, AddRef)(void);
  20.     STDMETHOD_(ULONG, Release)(void);
  21.  
  22.     /* IDispatch methods */
  23.     STDMETHOD(GetTypeInfoCount)(UINT FAR* pctinfo);
  24.     STDMETHOD(GetTypeInfo)(
  25.       UINT itinfo, 
  26.       LCID lcid,
  27.       ITypeInfo FAR* FAR* pptinfo);
  28.     STDMETHOD(GetIDsOfNames)(
  29.       REFIID riid, 
  30.       OLECHAR FAR* FAR* rgszNames, 
  31.       UINT cNames, 
  32.       LCID lcid, 
  33.       DISPID FAR* rgdispid);
  34.     STDMETHOD(Invoke)(
  35.       DISPID dispidMember, 
  36.       REFIID riid, 
  37.       LCID lcid, 
  38.       WORD wFlags, 
  39.       DISPPARAMS FAR* pdispparams, 
  40.       VARIANT FAR* pvarResult, 
  41.       EXCEPINFO FAR* pexcepinfo, 
  42.       UINT FAR* puArgErr);
  43.     CBaseIDispatch(void);
  44.     virtual ~CBaseIDispatch(void);
  45. protected:
  46.     const IID FAR* m_pIID;
  47.     CSupportErrorInfo FAR* m_pSupportErrorInfo;
  48. private:
  49.     inline HRESULT LoadTypeInfo(void);
  50.     ITypeInfo FAR* m_ptinfo;
  51.     ULONG m_refs;
  52. };
  53. CLASS CProvideClassInfo : public IProvideClassInfo
  54. {
  55. public:
  56.     static HRESULT Create(ITypeInfo FAR* ptinfo, CProvideClassInfo FAR* FAR* retVal);
  57.     /* IUnknown methods */
  58.     STDMETHOD(QueryInterface)(REFIID riid, void FAR* FAR* ppvObj);
  59.     STDMETHOD_(ULONG, AddRef)(void);
  60.     STDMETHOD_(ULONG, Release)(void);
  61.     /*IProvideClassInfo*/
  62.     STDMETHOD(GetClassInfo)(THIS_ LPTYPEINFO FAR* ppTI);
  63.     CProvideClassInfo();
  64.     ~CProvideClassInfo();
  65. private:
  66.     ITypeInfo FAR* m_ptinfo;
  67.     unsigned long m_refs;
  68. };
  69. #endif
  70.